<!DOCTYPE html>
<html><head>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    
    <link rel="alternate" type="application/rss+xml" href="/java/index.xml" title="h-book" />
    <link rel="canonical" href="/java/">

    <title>
        
        Java | h-book
        
    </title>

    
    <link href="/css/fontawesome.min.css" rel="stylesheet">

    
    <link rel="stylesheet" href="/css/ace.min.css">

    

    

</head>
<body><nav class="navbar navbar-expand-lg navbar-dark bg-primary shadow sticky-top" id="navbarMain">
    <div class="container">
        <div>
            <a class="navbar-brand" href="/">
                
                h-book
            </a>
        </div>
    </div>
</nav>
<div class="container-fluid">
            <div class="row">

                <div class="docs-sidenav order-0 col-12 col-md-3 col-lg-2 col-xl-2 position-sticky border-right"><nav class="navbar navbar-expand-md navbar-light pl-0">
    <button class="navbar-toggler navbar-toggler-right collapsed" type="button" data-toggle="collapse" data-target="#sidenav-left-collapse" aria-controls="sidenav-left-collapse" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>

     <div class="collapse navbar-collapse align-items-start flex-column" id="sidenav-left-collapse">
            <form class="form-inline my-2 my-lg-0 searchbox">
                <input class="form-control mr-sm-2 w-100" data-search-input id="search-by" type="text" placeholder="Search">
            </form>

        

         <ul class="navbar-nav flex-column pt-3">
    <li data-nav-id="/hugo/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/hugo/"><h6>Hugo</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/hugo/init/" class="nav-item my-1">
                
                
                  <a href="/hugo/init/" class="nav-link p-0">
                    init
                  </a>
                
        </li>
        <li data-nav-id="/hugo/add-page/" class="nav-item my-1">
                
                
                  <a href="/hugo/add-page/" class="nav-link p-0">
                    add-page
                  </a>
                
        </li>
        <li data-nav-id="/hugo/edit-skill/" class="nav-item my-1">
                
                
                  <a href="/hugo/edit-skill/" class="nav-link p-0">
                    edit-skill
                  </a>
                
        </li>
        <li data-nav-id="/hugo/publish/" class="nav-item my-1">
                
                
                  <a href="/hugo/publish/" class="nav-link p-0">
                    publish
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/android/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/android/"><h6>Android</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/android/install/" class="nav-item my-1">
                
                
                  <a href="/android/install/" class="nav-link p-0">
                    install
                  </a>
                
        </li>
        <li data-nav-id="/android/create-project/" class="nav-item my-1">
                
                
                  <a href="/android/create-project/" class="nav-link p-0">
                    create project
                  </a>
                
        </li>
        <li data-nav-id="/android/import-material/" class="nav-item my-1">
                
                
                  <a href="/android/import-material/" class="nav-link p-0">
                    import material
                  </a>
                
        </li>
        <li data-nav-id="/android/start-page/" class="nav-item my-1">
                
                
                  <a href="/android/start-page/" class="nav-link p-0">
                    startpage
                  </a>
                
        </li>
        <li data-nav-id="/android/i18n/" class="nav-item my-1">
                
                
                  <a href="/android/i18n/" class="nav-link p-0">
                    i18n
                  </a>
                
        </li>
        <li data-nav-id="/android/nav-flat-page/" class="nav-item my-1">
                
                
                  <a href="/android/nav-flat-page/" class="nav-link p-0">
                    nav flat page
                  </a>
                
        </li>
        <li data-nav-id="/android/activity/" class="nav-item my-1">
                
                
                  <a href="/android/activity/" class="nav-link p-0">
                    Activity
                  </a>
                
        </li>
        <li data-nav-id="/android/db/" class="nav-item my-1">
                
                
                  <a href="/android/db/" class="nav-link p-0">
                    DB
                  </a>
                
        </li>
        <li data-nav-id="/android/dialog/" class="nav-item my-1">
                
                
                  <a href="/android/dialog/" class="nav-link p-0">
                    Dialog
                  </a>
                
        </li>
        <li data-nav-id="/android/fragment/" class="nav-item my-1">
                
                
                  <a href="/android/fragment/" class="nav-link p-0">
                    Fragment
                  </a>
                
        </li>
        <li data-nav-id="/android/jetpack/" class="nav-item my-1">
                
                
                  <a href="/android/jetpack/" class="nav-link p-0">
                    Jetpack
                  </a>
                
        </li>
        <li data-nav-id="/android/material/" class="nav-item my-1">
                
                
                  <a href="/android/material/" class="nav-link p-0">
                    Material
                  </a>
                
        </li>
        <li data-nav-id="/android/storage/" class="nav-item my-1">
                
                
                  <a href="/android/storage/" class="nav-link p-0">
                    Storage
                  </a>
                
        </li>
        <li data-nav-id="/android/%E5%9B%BE%E6%A0%87/" class="nav-item my-1">
                
                
                  <a href="/android/%E5%9B%BE%E6%A0%87/" class="nav-link p-0">
                    图标
                  </a>
                
        </li>
        <li data-nav-id="/android/store/" class="nav-item my-1">
                
                
                  <a href="/android/store/" class="nav-link p-0">
                    Store
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/blender/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/blender/"><h6>Blender</h6></a>
        
    </li>
    <li data-nav-id="/bootstrap/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/bootstrap/"><h6>BootStrap</h6></a>
        
    </li>
    <li data-nav-id="/centos7/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/centos7/"><h6>Centos7</h6></a>
        
    </li>
    <li data-nav-id="/dlna/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/dlna/"><h6>DLNA</h6></a>
        
    </li>
    <li data-nav-id="/docker/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/docker/"><h6>Docker</h6></a>
        
    </li>
    <li data-nav-id="/dubbo/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/dubbo/"><h6>Dubbo</h6></a>
        
    </li>
    <li data-nav-id="/ffmpeg/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/ffmpeg/"><h6>FFmpeg</h6></a>
        
    </li>
    <li data-nav-id="/git/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/git/"><h6>Git</h6></a>
        
    </li>
    <li data-nav-id="/gitbook/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/gitbook/"><h6>Gitbook</h6></a>
        
    </li>
    <li data-nav-id="/gitlab/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/gitlab/"><h6>Gitlab</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/gitlab/runner/" class="nav-item my-1">
                
                
                  <a href="/gitlab/runner/" class="nav-link p-0">
                    Runner
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/gradle/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/gradle/"><h6>Gradle</h6></a>
        
    </li>
    <li data-nav-id="/java/" class="nav-item my-1 active
        ">
        
        
          <a class="nav-link p-0" href="/java/"><h6>Java</h6></a>
        
    </li>
    <li data-nav-id="/jenkins/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/jenkins/"><h6>Jenkins</h6></a>
        
    </li>
    <li data-nav-id="/kubernetes/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/kubernetes/"><h6>Kubernetes</h6></a>
        
    </li>
    <li data-nav-id="/mybatis/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/mybatis/"><h6>Mybatis</h6></a>
        
    </li>
    <li data-nav-id="/mybatis-plus/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/mybatis-plus/"><h6>Mybatis Plus</h6></a>
        
    </li>
    <li data-nav-id="/mysql/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/mysql/"><h6>MySQL</h6></a>
        
    </li>
    <li data-nav-id="/nodejs/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/nodejs/"><h6>Node.js</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/nodejs/npm/" class="nav-item my-1">
                
                
                  <a href="/nodejs/npm/" class="nav-link p-0">
                    NPM
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/postgresql/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/postgresql/"><h6>PostgreSQL</h6></a>
        
    </li>
    <li data-nav-id="/redis/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/redis/"><h6>Redis</h6></a>
        
    </li>
    <li data-nav-id="/samba/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/samba/"><h6>Samba</h6></a>
        
    </li>
    <li data-nav-id="/sql/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/sql/"><h6>SQL</h6></a>
        
    </li>
    <li data-nav-id="/ue5/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/ue5/"><h6>UE5</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/ue5/install/" class="nav-item my-1">
                
                
                  <a href="/ue5/install/" class="nav-link p-0">
                    install
                  </a>
                
        </li>
        <li data-nav-id="/ue5/uninstall/" class="nav-item my-1">
                
                
                  <a href="/ue5/uninstall/" class="nav-link p-0">
                    uninstall
                  </a>
                
        </li>
        <li data-nav-id="/ue5/qa/" class="nav-item my-1">
                
                
                  <a href="/ue5/qa/" class="nav-link p-0">
                    Q&amp;A
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity/"><h6>Unity</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity/install/" class="nav-item my-1">
                
                
                  <a href="/unity/install/" class="nav-link p-0">
                    install
                  </a>
                
        </li>
        <li data-nav-id="/unity/scene/" class="nav-item my-1">
                
                
                  <a href="/unity/scene/" class="nav-link p-0">
                    scene
                  </a>
                
        </li>
        <li data-nav-id="/unity/inspector/" class="nav-item my-1">
                
                
                  <a href="/unity/inspector/" class="nav-link p-0">
                    inspector
                  </a>
                
        </li>
        <li data-nav-id="/unity/assets/" class="nav-item my-1">
                
                
                  <a href="/unity/assets/" class="nav-link p-0">
                    assets
                  </a>
                
        </li>
        <li data-nav-id="/unity/audio-source/" class="nav-item my-1">
                
                
                  <a href="/unity/audio-source/" class="nav-link p-0">
                    audio source
                  </a>
                
        </li>
        <li data-nav-id="/unity/camera/" class="nav-item my-1">
                
                
                  <a href="/unity/camera/" class="nav-link p-0">
                    camera
                  </a>
                
        </li>
        <li data-nav-id="/unity/script/" class="nav-item my-1">
                
                
                  <a href="/unity/script/" class="nav-link p-0">
                    script
                  </a>
                
        </li>
        <li data-nav-id="/unity/prefabs/" class="nav-item my-1">
                
                
                  <a href="/unity/prefabs/" class="nav-link p-0">
                    prefabs
                  </a>
                
        </li>
        <li data-nav-id="/unity/physics/" class="nav-item my-1">
                
                
                  <a href="/unity/physics/" class="nav-link p-0">
                    physics
                  </a>
                
        </li>
        <li data-nav-id="/unity/skybox/" class="nav-item my-1">
                
                
                  <a href="/unity/skybox/" class="nav-link p-0">
                    skybox
                  </a>
                
        </li>
        <li data-nav-id="/unity/particle-system/" class="nav-item my-1">
                
                
                  <a href="/unity/particle-system/" class="nav-link p-0">
                    particle system
                  </a>
                
        </li>
        <li data-nav-id="/unity/shortcut-keys/" class="nav-item my-1">
                
                
                  <a href="/unity/shortcut-keys/" class="nav-link p-0">
                    shortcut keys
                  </a>
                
        </li>
        <li data-nav-id="/unity/qa/" class="nav-item my-1">
                
                
                  <a href="/unity/qa/" class="nav-link p-0">
                    Q&amp;A
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-2d-beginner/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-2d-beginner/"><h6>Unity 2D Beginner</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-2d-beginner/init-and-move/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/init-and-move/" class="nav-link p-0">
                    Init &amp; Move
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/map/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/map/" class="nav-link p-0">
                    Map
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/data/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/data/" class="nav-link p-0">
                    Data
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/animate/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/animate/" class="nav-link p-0">
                    Data
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/bullet/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/bullet/" class="nav-link p-0">
                    Bullet
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/cinemachine/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/cinemachine/" class="nav-link p-0">
                    Cinemachine
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/particle/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/particle/" class="nav-link p-0">
                    Particle
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/ui/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/ui/" class="nav-link p-0">
                    UI
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/npc/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/npc/" class="nav-link p-0">
                    NPC
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/sound/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/sound/" class="nav-link p-0">
                    Sound
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-2d-game-kit/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-2d-game-kit/"><h6>Unity 2D Game Kit</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-2d-game-kit/record/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-game-kit/record/" class="nav-link p-0">
                    record
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-3d-beginner/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-3d-beginner/"><h6>Unity 3D Beginner</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-3d-beginner/init/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/init/" class="nav-link p-0">
                    Init
                  </a>
                
        </li>
        <li data-nav-id="/unity-3d-beginner/level/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/level/" class="nav-link p-0">
                    Level
                  </a>
                
        </li>
        <li data-nav-id="/unity-3d-beginner/nav/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/nav/" class="nav-link p-0">
                    Nav
                  </a>
                
        </li>
        <li data-nav-id="/unity-3d-beginner/render-pipeline/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/render-pipeline/" class="nav-link p-0">
                    Render Pipeline
                  </a>
                
        </li>
        <li data-nav-id="/unity-3d-beginner/postprocessing/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/postprocessing/" class="nav-link p-0">
                    PostProcessing
                  </a>
                
        </li>
        <li data-nav-id="/unity-3d-beginner/ui/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/ui/" class="nav-link p-0">
                    UI
                  </a>
                
        </li>
        <li data-nav-id="/unity-3d-beginner/enemy/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/enemy/" class="nav-link p-0">
                    Enemy
                  </a>
                
        </li>
        <li data-nav-id="/unity-3d-beginner/sound/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/sound/" class="nav-link p-0">
                    Sound
                  </a>
                
        </li>
        <li data-nav-id="/unity-3d-beginner/%E5%BB%BA%E6%A8%A1%E5%B7%A5%E5%85%B7/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/%E5%BB%BA%E6%A8%A1%E5%B7%A5%E5%85%B7/" class="nav-link p-0">
                    建模工具
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-arpg/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-arpg/"><h6>Unity ARPG</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-arpg/init/" class="nav-item my-1">
                
                
                  <a href="/unity-arpg/init/" class="nav-link p-0">
                    Init
                  </a>
                
        </li>
        <li data-nav-id="/unity-arpg/role-state-machine/" class="nav-item my-1">
                
                
                  <a href="/unity-arpg/role-state-machine/" class="nav-link p-0">
                    Role State Machine
                  </a>
                
        </li>
        <li data-nav-id="/unity-arpg/api-piece/" class="nav-item my-1">
                
                
                  <a href="/unity-arpg/api-piece/" class="nav-link p-0">
                    API Piece
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-creativecore-animation/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-creativecore-animation/"><h6>Unity Creativecore Animation</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-creativecore-animation/door/" class="nav-item my-1">
                
                
                  <a href="/unity-creativecore-animation/door/" class="nav-link p-0">
                    Door
                  </a>
                
        </li>
        <li data-nav-id="/unity-creativecore-animation/init/" class="nav-item my-1">
                
                
                  <a href="/unity-creativecore-animation/init/" class="nav-link p-0">
                    Init
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-creativecore-lighting/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-creativecore-lighting/"><h6>Unity Creativecore Lighting</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-creativecore-lighting/init/" class="nav-item my-1">
                
                
                  <a href="/unity-creativecore-lighting/init/" class="nav-link p-0">
                    Init
                  </a>
                
        </li>
        <li data-nav-id="/unity-creativecore-lighting/outdoor/" class="nav-item my-1">
                
                
                  <a href="/unity-creativecore-lighting/outdoor/" class="nav-link p-0">
                    Outdoor
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-creativecore-shader/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-creativecore-shader/"><h6>Unity Creativecore Shader</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-creativecore-shader/init/" class="nav-item my-1">
                
                
                  <a href="/unity-creativecore-shader/init/" class="nav-link p-0">
                    Init
                  </a>
                
        </li>
        <li data-nav-id="/unity-creativecore-shader/glass/" class="nav-item my-1">
                
                
                  <a href="/unity-creativecore-shader/glass/" class="nav-link p-0">
                    Glass
                  </a>
                
        </li>
        <li data-nav-id="/unity-creativecore-shader/shader-graph/" class="nav-item my-1">
                
                
                  <a href="/unity-creativecore-shader/shader-graph/" class="nav-link p-0">
                    Shader-Graph
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-creator-kit-beginner-code/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-creator-kit-beginner-code/"><h6>Unity Creator Kit Beginner Code</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-creator-kit-beginner-code/record/" class="nav-item my-1">
                
                
                  <a href="/unity-creator-kit-beginner-code/record/" class="nav-link p-0">
                    record
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-creator-kit-fps/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-creator-kit-fps/"><h6>Unity Creator Kit FPS</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-creator-kit-fps/record/" class="nav-item my-1">
                
                
                  <a href="/unity-creator-kit-fps/record/" class="nav-link p-0">
                    record
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-mythirdperson/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-mythirdperson/"><h6>Unity My Third Person</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-mythirdperson/init/" class="nav-item my-1">
                
                
                  <a href="/unity-mythirdperson/init/" class="nav-link p-0">
                    Init
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-playground/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-playground/"><h6>Unity Playground</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-playground/record/" class="nav-item my-1">
                
                
                  <a href="/unity-playground/record/" class="nav-link p-0">
                    record
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-ui/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-ui/"><h6>Unity UI</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-ui/init/" class="nav-item my-1">
                
                
                  <a href="/unity-ui/init/" class="nav-link p-0">
                    record
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-vfx/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-vfx/"><h6>Unity VFX</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-vfx/init/" class="nav-item my-1">
                
                
                  <a href="/unity-vfx/init/" class="nav-link p-0">
                    record
                  </a>
                
        </li>
        <li data-nav-id="/unity-vfx/bullet/" class="nav-item my-1">
                
                
                  <a href="/unity-vfx/bullet/" class="nav-link p-0">
                    bullet
                  </a>
                
        </li>
        <li data-nav-id="/unity-vfx/rain/" class="nav-item my-1">
                
                
                  <a href="/unity-vfx/rain/" class="nav-link p-0">
                    rain
                  </a>
                
        </li>
        <li data-nav-id="/unity-vfx/rock-rain/" class="nav-item my-1">
                
                
                  <a href="/unity-vfx/rock-rain/" class="nav-link p-0">
                    Rock Rain
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/vue/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/vue/"><h6>Vue</h6></a>
        
    </li>
    <li data-nav-id="/web/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/web/"><h6>Web</h6></a>
        
    </li>
        </ul>
    </div>
</nav>


</div>
                <div class="docs-toc large order-lg-2 order-md-0 order-xs-1 col-12 col-lg-2 col-xl-2 position-sticky border-left"><div class="docs-toc">
	<nav id="TableOfContents">
  <ul>
    <li><a href="#多线程">多线程</a>
      <ul>
        <li><a href="#3种方式">3种方式</a></li>
      </ul>
    </li>
    <li><a href="#代理模式">代理模式</a>
      <ul>
        <li><a href="#静态代理">静态代理</a></li>
      </ul>
    </li>
    <li><a href="#线程状态">线程状态</a></li>
    <li><a href="#锁">锁</a></li>
    <li><a href="#并发安全集合">并发安全集合</a></li>
    <li><a href="#生产者消费者模式">生产者消费者模式</a></li>
    <li><a href="#线程池">线程池</a></li>
    <li><a href="#注解">注解</a>
      <ul>
        <li><a href="#元注解">元注解</a></li>
        <li><a href="#编译时解析">编译时解析</a></li>
      </ul>
    </li>
    <li><a href="#反射">反射</a>
      <ul>
        <li><a href="#取方法入参的泛型">取方法入参的泛型</a></li>
        <li><a href="#取方法返回值泛型">取方法返回值泛型</a></li>
        <li><a href="#取注解的属性">取注解的属性</a></li>
      </ul>
    </li>
    <li><a href="#内存">内存</a></li>
    <li><a href="#类加载">类加载</a></li>
  </ul>
</nav>
</div>
</div>
                <div class="main col-12 order-1 col-md-9 col-lg-10 col-xl-8 py-3">
                

<div class="d-flex flex-column">
    <h1 class="js-title">Java</h1>
    <div class="d-flex align-items-center">
        
    </div>
</div>

<hr>


<p><a href="https://github.com/Snailclimb/JavaGuide">https://github.com/Snailclimb/JavaGuide</a></p>
<p><a href="https://blog.mythsman.com/post/5d838c7c2db8a452e9b7082c/">https://blog.mythsman.com/post/5d838c7c2db8a452e9b7082c/</a></p>
<p><a href="https://blog.csdn.net/u010853261/article/details/77940767">https://blog.csdn.net/u010853261/article/details/77940767</a></p>
<p><a href="https://www.bilibili.com/video/av76124139?p=1">https://www.bilibili.com/video/av76124139?p=1</a></p>
<p><a href="./阿里巴巴Java性能调优实战（2021华山版）.docx" download>阿里巴巴Java性能调优实战（2021华山版）</a></p>
<p><a href="./jdk api 1.8.CHM" download>jdk api 1.8.CHM</a></p>
<p>StringBuffer 线程安全的</p>
<p>由于静态方法可以不通过对象进行调用，因此在静态方法里，不能调用其他非静态变量，也不可以访问非静态变量成员。</p>
<p>Java 8 开始接口方法可以有默认实现和静态方法</p>
<p>String 中的 equals 方法是被重写过的</p>
<p>HashSet 会先计算对象的 hashcode 。但是如果发现有相同 hashcode 值的对象，这时会调用 equals()方法来检查</p>
<p>线程状态   初始   运行   阻塞   等待   超时等待   终止</p>
<p>Throwable： 有两个重要的子类：Exception（异常） 和 Error（错误）</p>
<p>对于不想进行序列化的变量，使用 transient 关键字修饰</p>
<p>IO 流分为   输入流和输出流     字节流和字符流</p>
<ul>
<li>InputStream/Reader输入流的基类，前者是字节输入流，后者是字符输入流</li>
<li>OutputStream/Writer输出流的基类，前者是字节输出流，后者是字符输出流</li>
</ul>
<p>HashSet，TreeSet，ArrayList,LinkedList,HashMap,TreeMap 都是线程不安全的</p>
<p>浮点数之间BigDecimal</p>
<p>sleep 方法没有释放锁，而 wait 方法释放了锁</p>
<p>java8 函数式接口</p>
<p>ArrayList add 进第1个元素时，minCapacity为1，在Math.max()方法比较后，minCapacity 为10 当add第11个元素进入grow方法时 每次扩容之后容量都会变为原来的 1.5 倍</p>
<p>加载因子为1</p>
<p>HashMap 是非线程安全的，HashTable 是线程安全的   HashTable 内部的方法基本都经过synchronized 修饰     HashMap 要比 HashTable 效率高一点     HashMap 中，null 可以作为键     Hashtable 默认的初始大小为11，之后每次扩充，容量变为原来的2n+1。HashMap 默认的初始化大小为16。之后每次扩充，容量变为原来的2倍</p>
<p>创建时如果给定了容量初始值，那么 Hashtable 会直接使用你给定的大小，而 HashMap 会将其扩充为2的幂次方大小</p>
<p>HashMap 长度大于阈值（默认为8）时，将链表转化为红黑树</p>
<p>加载因子为0.75</p>
<p>HashSet 底层就是基于 HashMap 实现的</p>
<p>HashMap使用键（Key）计算Hashcode</p>
<p>HashSet使用成员对象来计算hashcode值，对于两个对象来说hashcode可能相同，所以equals()方法用来判断对象的相等性，</p>
<p>加载因子为0.75</p>
<p>JDK1.8 的 hash 方法 ，JDK 1.7 的 hash 方法的性能会稍差一点点，因为毕竟扰动了 4 次</p>
<p>synchronized 依赖于 JVM 而 ReentrantLock 依赖于 API</p>
<p>相比synchronized，ReentrantLock增加了一些高级功能。主要来说主要有三点：①等待可中断；②可实现公平锁；③可实现选择性通知（锁可以绑定多个条件）</p>
<p>最终的变量是放在了当前线程的 ThreadLocalMap 中，并不是存在 ThreadLocal 上，ThreadLocal 可以理解为只是ThreadLocalMap的封装，传递了变量值</p>
<p>Runnable 接口不会返回结果或抛出检查异常，但是<strong>Callable 接口</strong>可以。所以，如果任务不需要返回结果或抛出异常推荐使用 Runnable 接口</p>
<p>execute()方法用于提交不需要返回值的任务，所以无法判断任务是否被线程池执行成功与否；</p>
<p>submit()方法用于提交需要返回值的任务。线程池会返回一个 Future 类型的对象，通过这个 Future 对象可以判断任务是否执行成功</p>
<p>MyISAM是MySQL的默认数据库引擎（5.5版之前）。虽然性能极佳，而且提供了大量的特性，包括全文索引、压缩、空间函数等，但MyISAM不支持事务和行级锁，而且最大的缺陷就是崩溃后无法安全恢复。不过，5.5版本之后，MySQL引入了InnoDB（事务性数据库引擎），MySQL 5.5版本后默认的存储引擎为InnoDB。</p>
<p>隔离级别	脏读	不可重复读	幻影读</p>
<p>READ-UNCOMMITTED	√	√	√</p>
<p>READ-COMMITTED	×	√	√</p>
<p>REPEATABLE-READ	×	×	√</p>
<p>SERIALIZABLE	×	×	×</p>
<p>JDK动态代理模式只能代理接口而不能代理类</p>
<p>Spring AOP 同时支持 CGLIB、ASPECTJ、JDK动态代理。</p>
<p>pring 框架中用到了哪些设计模式？</p>
<ul>
<li>工厂设计模式 : Spring使用工厂模式通过 BeanFactory、ApplicationContext 创建 bean 对象。</li>
<li>代理设计模式 : Spring AOP 功能的实现。</li>
<li>单例设计模式 : Spring 中的 Bean 默认都是单例的。</li>
<li>模板方法模式 : Spring 中 jdbcTemplate、hibernateTemplate 等以 Template 结尾的对数据库操作的类，它们就使用到了模板模式。</li>
<li>包装器设计模式 : 我们的项目需要连接多个数据库，而且不同的客户在每次访问中根据需要会去访问不同的数据库。这种模式让我们可以根据客户的需求能够动态切换不同的数据源。</li>
<li>观察者模式: Spring 事件驱动模型就是观察者模式很经典的一个应用。</li>
<li>适配器模式 :Spring AOP 的增强或通知(Advice)使用到了适配器模式、spring MVC 中也是用到了适配器模式适配Controller。</li>
</ul>
<p>循环依赖</p>
<p>这三级缓存分别指：</p>
<ol>
<li>singletonFactories ： 单例对象工厂的cache</li>
<li>earlySingletonObjects ：提前暴光的单例对象的Cache</li>
<li>singletonObjects：单例对象的cache</li>
</ol>
<p>让我们来分析一下“A的某个field或者setter依赖了B的实例对象，同时B的某个field或者setter依赖了A的实例对象”这种循环依赖的情况。A首先完成了初始化的第一步，并且将自己提前曝光到singletonFactories中，此时进行初始化的第二步，发现自己依赖对象B，此时就尝试去get(B)，发现B还没有被create，所以走create流程，B在初始化第一步的时候发现自己依赖了对象A，于是尝试get(A)，尝试一级缓存singletonObjects(肯定没有，因为A还没初始化完全)，尝试二级缓存earlySingletonObjects（也没有），尝试三级缓存singletonFactories，由于A通过ObjectFactory将自己提前曝光了，所以B能够通过ObjectFactory.getObject拿到A对象(虽然A还没有初始化完全，但是总比没有好呀)，B拿到A对象后顺利完成了初始化阶段1、2、3，完全初始化之后将自己放入到一级缓存singletonObjects中。此时返回A中，A此时能拿到B的对象顺利完成自己的初始化阶段2、3，最终A也完成了初始化，进去了一级缓存singletonObjects中，而且更加幸运的是，由于B拿到了A的对象引用，所以B现在hold住的A对象完成了初始化。</p>
<h2 id="多线程">多线程</h2>
<h3 id="3种方式">3种方式</h3>
<ul>
<li>继承Thread类</li>
<li>实现Runnable接口</li>
<li>实现Callable接口</li>
</ul>
<h4 id="继承thread类">继承Thread类</h4>
<ul>
<li>重写run方法</li>
<li>new该类</li>
<li>调用start方法</li>
</ul>
<h4 id="实现runnable接口">实现Runnable接口</h4>
<ul>
<li>实现run方法</li>
<li>new该类实例</li>
<li>new Thread(实例)</li>
<li>调用start方法</li>
</ul>
<h4 id="实现callable接口">实现Callable接口</h4>
<ul>
<li>实现call方法</li>
<li>new该类实例</li>
<li>new线程池</li>
<li>线程池对象.submit(实例)</li>
</ul>
<h2 id="代理模式">代理模式</h2>
<h3 id="静态代理">静态代理</h3>
<ul>
<li>定义接口</li>
<li>代理类和业务类都实现该接口</li>
<li>new代理类(new业务类)，内部多态持有私有属性</li>
<li>代理类实例调用接口的方法时，实际调用业务类实例的方法</li>
<li>调用业务类实例的方法前后，可以附加一些额外的逻辑</li>
</ul>
<h2 id="线程状态">线程状态</h2>
<ul>
<li>创建状态：创建线程后</li>
<li>就绪状态：调用start方法后</li>
<li>运行状态</li>
<li>阻塞状态：sleep或锁后（sleep不用释放锁）</li>
<li>死亡状态：线程结束（推荐使用标志位机制让程序自动停止）</li>
</ul>
<p>线程a.join()会将阻塞当前执行的线程，并等待线程a执行完后才继续执行</p>
<p>线程优先级1~10，最高10，最低1，默认是5，设错会报错</p>
<p>默认线程都是用户线程，调用setDaemon(true)后为守护线程，此时虚拟机不会等待其执行完</p>
<h2 id="锁">锁</h2>
<p>ReentrantLock实现Lock，拥有与synchronized相同的并发性和内存语义</p>
<p>锁实例.lock()到锁.unlock()之间的代码会被上锁，unlock通常放入finally中</p>
<h2 id="并发安全集合">并发安全集合</h2>
<p>CopyOnWriteArrayList 内部持有ReentrantLock和被transient volatile修饰的Object[] array</p>
<h2 id="生产者消费者模式">生产者消费者模式</h2>
<p>生产者、队列、消费者</p>
<p>wait()、notify()属于Object的方法</p>
<ul>
<li>生产者判队列满，满时wait；反之notifyAll</li>
<li>消费者判队列空，空时wait；反之notifyAll</li>
</ul>
<h2 id="线程池">线程池</h2>
<p>核心线程、最大线程、等待队列、空闲线程生命时间</p>
<p>先跑核心线程，满时入队列，队列满时启新线程，最多启到最大线程，再超过时按异常处理策略处理，反之等空闲线程生命时间完回收</p>
<h2 id="注解">注解</h2>
<h3 id="元注解">元注解</h3>
<ul>
<li>@Target 适用范围</li>
<li>@Retention 生命周期（Source、Class、Runtime）</li>
<li>@Documented</li>
<li>@Inherited 子类可以继承父类</li>
</ul>
<h3 id="编译时解析">编译时解析</h3>
<ul>
<li>Annotation Processing Tool</li>
</ul>
<p>apt自JDK5产生，JDK7标记过期，JDK8删除，没有继承到javac中，需要额外运行。自JDK6开始，可以使用Pluggable Annotation Processing API来替换它</p>
<ul>
<li>Pluggable Annotation Processing API</li>
</ul>
<p>JSR 269，作为apt的代替方案，解决apt两个问题，javac在执行的时候会调用实现了该API的程序，这样就能堆编译器做一些增强</p>
<p>Lombok就是实现了JSR 269 API，在javac过程中会</p>
<ul>
<li>javac语法分析，形成语法树AST</li>
<li>运行过程中调用实现了JSR 269 API的Lombok程序</li>
<li>Lombok堆AST进行处理，找到注解所在类对应的AST，然后修改，如增加getter、setter方法</li>
<li>javac对修改后的AST形成字节码文件</li>
</ul>
<h2 id="反射">反射</h2>
<ul>
<li>类.class</li>
<li>Class.forName(&ldquo;全名&rdquo;)</li>
<li>实例.getClass()</li>
</ul>
<p>setAccessible(true) 可操作私有</p>
<h3 id="取方法入参的泛型">取方法入参的泛型</h3>
<div class="highlight"><pre tabindex="0" style="color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#00a8c8">public</span> <span style="color:#00a8c8">void</span> <span style="color:#75af00">t</span><span style="color:#111">(</span><span style="color:#111">Map</span><span style="color:#f92672">&lt;</span><span style="color:#111">String</span><span style="color:#111">,</span> <span style="color:#111">User</span><span style="color:#f92672">&gt;</span> <span style="color:#111">map</span><span style="color:#111">,</span> <span style="color:#111">List</span><span style="color:#f92672">&lt;</span><span style="color:#111">User</span><span style="color:#f92672">&gt;</span> <span style="color:#111">list</span><span style="color:#111">)</span> <span style="color:#111">{}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#111">Method</span> <span style="color:#111">method</span> <span style="color:#f92672">=</span> <span style="color:#111">T</span><span style="color:#111">.</span><span style="color:#75af00">class</span><span style="color:#111">.</span><span style="color:#75af00">getMethod</span><span style="color:#111">(</span><span style="color:#111">t</span><span style="color:#111">,</span> <span style="color:#111">Map</span><span style="color:#111">.</span><span style="color:#75af00">class</span><span style="color:#111">,</span> <span style="color:#111">List</span><span style="color:#111">.</span><span style="color:#75af00">calss</span><span style="color:#111">)</span>
</span></span><span style="display:flex;"><span><span style="color:#111">Type</span><span style="color:#f92672">[]</span> <span style="color:#111">genericParameterTypes</span> <span style="color:#f92672">=</span> <span style="color:#111">method</span><span style="color:#111">.</span><span style="color:#75af00">getGenericParameterTypes</span><span style="color:#111">()</span>
</span></span><span style="display:flex;"><span><span style="color:#00a8c8">for</span> <span style="color:#111">(</span><span style="color:#111">Type</span> <span style="color:#111">gpt</span> <span style="color:#111">:</span> <span style="color:#111">genericParameterTypes</span><span style="color:#111">)</span> <span style="color:#111">{</span>
</span></span><span style="display:flex;"><span>    <span style="color:#111">println</span><span style="color:#111">(</span><span style="color:#111">gpt</span><span style="color:#111">)</span> <span style="color:#75715e">// java.util.Map&lt;java.lang.String, a.b.c.User&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#00a8c8">if</span> <span style="color:#111">(</span><span style="color:#111">gpt</span> <span style="color:#00a8c8">instanceof</span> <span style="color:#111">ParameterizedType</span><span style="color:#111">)</span> <span style="color:#111">{</span>
</span></span><span style="display:flex;"><span>        <span style="color:#111">Type</span><span style="color:#f92672">[]</span> <span style="color:#111">actualTypeArguments</span> <span style="color:#f92672">=</span> <span style="color:#111">((</span><span style="color:#111">ParameterizedType</span><span style="color:#111">)</span> <span style="color:#111">gpt</span><span style="color:#111">).</span><span style="color:#75af00">getActualTypeArguments</span><span style="color:#111">()</span>
</span></span><span style="display:flex;"><span>        <span style="color:#00a8c8">for</span> <span style="color:#111">(</span><span style="color:#111">Type</span> <span style="color:#111">ata</span> <span style="color:#111">:</span> <span style="color:#111">actualTypeArguments</span><span style="color:#111">)</span> <span style="color:#111">{</span>
</span></span><span style="display:flex;"><span>            <span style="color:#111">println</span><span style="color:#111">(</span><span style="color:#111">ata</span><span style="color:#111">)</span> <span style="color:#75715e">// java.lang.String, a.b.c.User</span>
</span></span><span style="display:flex;"><span>        <span style="color:#111">}</span>
</span></span><span style="display:flex;"><span>    <span style="color:#111">}</span>
</span></span><span style="display:flex;"><span><span style="color:#111">}</span>
</span></span></code></pre></div><h3 id="取方法返回值泛型">取方法返回值泛型</h3>
<p>method.getGenericReturnType() 上同</p>
<h3 id="取注解的属性">取注解的属性</h3>
<ul>
<li>注解 a = (注解)clazz.getAnnotation(注解.class)</li>
<li>a.属性()</li>
</ul>
<h2 id="内存">内存</h2>
<ul>
<li>堆 对象和数组，会被线程共享</li>
<li>栈 基本数据类型，引用在堆里的具体地址</li>
<li>方法区 class、static，会被线程共享</li>
</ul>
<h2 id="类加载">类加载</h2>
<ul>
<li>类的加载（Load） 将class文件读入内存，创建一个代表这个类的java.lang.Class对象</li>
<li>类的链接（Link） 确保类信息符合JVM规范，为类变量（static）分配内存和默认值，常量替换为直接地址的引用</li>
<li>类的初始化（Initialize） 执行clinit方法（多线程中会正确的加锁和同步），类变量赋值和静态代码块合并产生，有父类先初始化父类</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#00a8c8">class</span> <span style="color:#75af00">X</span> <span style="color:#111">{</span>
</span></span><span style="display:flex;"><span>    <span style="color:#00a8c8">static</span> <span style="color:#111">{</span>
</span></span><span style="display:flex;"><span>        <span style="color:#111">m</span> <span style="color:#f92672">=</span> <span style="color:#111">300</span><span style="color:#111">;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#111">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#00a8c8">static</span> <span style="color:#00a8c8">int</span> <span style="color:#111">m</span> <span style="color:#f92672">=</span> <span style="color:#111">100</span><span style="color:#111">;</span>
</span></span><span style="display:flex;"><span><span style="color:#111">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#00a8c8">new</span> <span style="color:#111">A</span><span style="color:#111">().</span><span style="color:#75af00">m</span> <span style="color:#75715e">// 100，先执行=300，后执行=100</span>
</span></span></code></pre></div><ul>
<li>引导类加载器 C++编写，负责Java平台核心库（rt.jar）</li>
<li>扩展类加载器 负责jre/lib/ext目录下的jar包</li>
<li>系统类加载器 负责java -classpath或-D java.class.path所指的目录下的类与jar包装入，最常用的加载器</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#111">ClassLoader</span> <span style="color:#111">systemClassLoader</span> <span style="color:#f92672">=</span> <span style="color:#111">ClassLoader</span><span style="color:#111">.</span><span style="color:#75af00">getSystemClassLoader</span><span style="color:#111">();</span>
</span></span><span style="display:flex;"><span><span style="color:#111">println</span><span style="color:#111">(</span><span style="color:#111">systemClassLoader</span><span style="color:#111">)</span> <span style="color:#75715e">// sum.misc.Launcher$AppClassLoader@xxxx</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#111">ClassLoader</span> <span style="color:#111">parent</span> <span style="color:#f92672">=</span> <span style="color:#111">systemClassLoader</span><span style="color:#111">.</span><span style="color:#75af00">getParent</span><span style="color:#111">();</span>
</span></span><span style="display:flex;"><span><span style="color:#111">println</span><span style="color:#111">(</span><span style="color:#111">parent</span><span style="color:#111">)</span> <span style="color:#75715e">// sum.misc.Launcher$ExtClassLoader@yyy</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#111">ClassLoader</span> <span style="color:#111">parent1</span> <span style="color:#f92672">=</span> <span style="color:#111">parent</span><span style="color:#111">.</span><span style="color:#75af00">getParent</span><span style="color:#111">();</span>
</span></span><span style="display:flex;"><span><span style="color:#111">println</span><span style="color:#111">(</span><span style="color:#111">parent1</span><span style="color:#111">)</span> <span style="color:#75715e">// null</span>
</span></span></code></pre></div><p>双亲委派机制 当父加载器有类时，不会加载子加载器的类</p>


    


                    
                    <div class="row"></div> 

                </div>

            </div> 

        </div> 
<script src="/lib/jquery.min.js"></script> 
<script src="/lib/popper.min.js"></script> 

<script src="/js/bootstrap.min.js"></script> 


<script type="text/javascript" src="/plugins/lunr.min.js"></script>
<script type="text/javascript" src="/plugins/auto-complete.js"></script>
<link href="/plugins/auto-complete.css" rel="stylesheet">
<script type="text/javascript">
  
      var baseurl = "\/";
  
</script>
<script type="text/javascript" src="/plugins/search.js"></script>

<script type="text/javascript" src="/plugins/favorites.js"></script>


<script type="text/javascript" src="/plugins/clipboard.js"></script>
<script>
  new ClipboardJS('.btn');
</script>
</body>
</html>
